/**
 * 菜单状态管理
 */
import { getMenuList } from '@/api/system/index';
import { clearStorage } from '@/utils/storage';
import { defineStore } from 'pinia';

// 处理菜单字段
function formatMenuItems(arr) {
    for (let i = 0; i < arr.length; i++) {
        const item = arr[i];
        // 添加 title 和 to 字段
        item.title = item.name;
        item.to = item.path;
        // 插入 heading 对象到指定 name 前
        // if (item.name === '这是测试啊啊') {
        //     arr.splice(i, 0, { heading: 'MES系统分类' });
        //     i++; // 跳过刚插入的 heading，继续往后
        // }
        // 递归处理 children
        if (Array.isArray(item.children)) {
            formatMenuItems(item.children);
        }
    }
}

export const useMenuStore = defineStore('menu', {
    state: () => ({
        menus: [],
        loading: false,
    }),
    actions: {
        // 获取用户菜单
        async fetchUserMenus() {
            this.loading = true;
            try {
                const response = await getMenuList();
                if (response.data) {
                    const rawMenus = response.data.data;
                    const list = rawMenus[0]?.children || [];
                    if (list.length != 0) {
                        list.splice(0, 1); // 从索引0开始删除1个对象(因为第一个对象里边是桌面，就是各个系统的列表数据)
                    }
                    formatMenuItems(list); // 添加 title 和 to 字段
                    this.menus = rawMenus;
                    localStorage.setItem('justech-menu', JSON.stringify({
                        content: list,
                        dataType: 'Array',
                        datetime: Date.now()
                    }));
                }
            } catch (error) {
                console.error('获取菜单失败:', error);
            } finally {
                this.loading = false;
            }
        },
        // 清除菜单数据
        clearMenus() {
            this.menus = [];
            // 使用全局方法清除localStorage和cookie
            clearStorage();
        }
    }
})
